wayland: Set startup ID from GApplication platform data
authorFlorian Müllner <fmuellner@gnome.org>
Mon, 10 Oct 2016 10:33:54 +0000 (12:33 +0200)
committerMatthias Clasen <mclasen@redhat.com>
Wed, 9 Nov 2016 19:18:14 +0000 (14:18 -0500)
The GApplication platform data may contain a startup ID that on X11
is used to set the startup notification ID when activated. Do the
same on the wayland backend to make startup notifications work for
DBus-activated applications where the DESKTOP_STARTUP_ID environment
variable is not set.

https://bugzilla.gnome.org/show_bug.cgi?id=768531

gtk/gtkapplication-wayland.c

index 84df82c2753e03fc72635ac89c6662354fade9a6..221a1adb3b3a5d6cbea106eac3e665f01bd2e960 100644 (file)
@@ -60,6 +60,17 @@ gtk_application_impl_wayland_handle_window_realize (GtkApplicationImpl *impl,
   impl_class->handle_window_realize (impl, window);
 }
 
+static void
+gtk_application_impl_wayland_before_emit (GtkApplicationImpl *impl,
+                                          GVariant           *platform_data)
+{
+  const char *startup_notification_id = NULL;
+
+  g_variant_lookup (platform_data, "desktop-startup-id", "&s", &startup_notification_id);
+
+  gdk_wayland_display_set_startup_notification_id (gdk_display_get_default (), startup_notification_id);
+}
+
 static void
 gtk_application_impl_wayland_init (GtkApplicationImplWayland *wayland)
 {
@@ -72,4 +83,6 @@ gtk_application_impl_wayland_class_init (GtkApplicationImplWaylandClass *class)
 
   impl_class->handle_window_realize =
     gtk_application_impl_wayland_handle_window_realize;
+  impl_class->before_emit =
+    gtk_application_impl_wayland_before_emit;
 }